//更简洁的属性定义
// var name = 'jack',
//   age = 18
// var user = { name: name, age: age }

const { log } = require('console')

// var name = 'jack',
//   age = 18
// var user = { name, age }

//更简洁的方法定义
// var user = {
//   show: function () {},
// }
//ES6定义
// var user = {
//   show() {},
// }

//属性名表达式
// var user = {
//   prefix_attrl: 'foo',
//   prefix_show: function () {},
//   prefix_login() {},
// }
// user['prefix' + '_attr2'] = 'bar'

//ES6的定义
// var pf = 'prefix'
// var i = 1
// var user = {
//   [pf + 'attr' + i++]: 'foo', //计算后的属性名是prefix——attr1
//   [pf + 'show']: function () {},
//   [pf + 'login']() {}, //方法名也可以使用表达式
//   [pf + 'attr' + i++]: 'bar',
// }

//访问器属性简介定义
// var user = {
//   _age: 0,
//   get id() {
//     //读
//     return this._age
//   },
//   set id(value) {
//     //写
//     this._age = value
//   },
// }
// user.age = 18
// console.log(user.age)

//直接指定原型
// var animal = { name: '动物' }
// var cat = {
//   __proto__: animal, //指定原型对象
// }
// console.log(cat.name)

//super
// var animal = {
//   name: '动物',
//   show() {
//     console.log('一只' + this.name)
//   },
// }
// var cat = {
//   __proto__: animal, //指定原型对象
//   name: '猫',
//   show() {
//     super.show(0) //调用原型中的show方法
//     console.log('喵喵.....')
//   },
// }
// cat.show()

//声明块级作用域
//let
if (true) {
  var m = 100 //m在整个全局作用域中有效
}
